#include <iostream>  
using namespace std;  
  
const int MAX_SIZE = 10; // 环形队列的最大容量  
  
class CircularQueue {  
private:  
    int front; // 队头指针  
    int rear; // 队尾指针  
    int data[MAX_SIZE]; // 存储队列元素的数组  
public:  
    CircularQueue() { // 构造函数  
        front = rear = -1; // 初始化队头和队尾指针为-1  
    }  
    bool is_empty() { // 判断队列是否为空  
        return front == rear;  
    }  
    bool is_full() { // 判断队列是否已满  
        return (rear + 1) % MAX_SIZE == front;  
    }  
    void enqueue(int value) { // 入队操作  
        if (is_full()) { // 如果队列已满，无法入队，直接返回  
            cout << "Queue is full!" << endl;  
            return;  
        }  
        rear = (rear + 1) % MAX_SIZE; // 更新队尾指针的位置  
        data[rear] = value; // 将元素存储到队尾位置  
        if (front == -1) { // 如果队列为空，更新队头指针的位置  
            front = rear;  
        }  
    }  
    int dequeue() { // 出队操作  
        if (is_empty()) { // 如果队列为空，无法出队，直接返回-1  
            cout << "Queue is empty!" << endl;  
            return -1;  
        }  
        int value = data[front]; // 获取队头元素的值  
        if (front == rear) { // 如果队列中只有一个元素，将队头和队尾指针置为-1  
            front = rear = -1;  
        } else { // 如果队列中不止一个元素，更新队头指针的位置  
            front = (front + 1) % MAX_SIZE;  
        }  
        return value; // 返回出队的元素值  
    }  
    int get_front() { // 获取队头元素的值  
        if (is_empty()) { // 如果队列为空，直接返回-1  
            cout << "Queue is empty!" << endl;  
            return -1;  
        }  
        return data[front]; // 返回队头元素的值，但不更新队头指针的位置  
    }  
};